<?php
class ProductsController extends XPHP_Controller
{
	public function _init()
	{
		$this->loadLayout("NewProduct");
	}
	public function indexAction($args)
	{
		$modelCategories = new Areas_CP_Models_ProductCategories();
		$modelProducts = new Areas_CP_Models_Products();
		//Nếu không có tham số
		if (empty($args) || $args[0] == "")
		{
			$products = $modelProducts->select_all();
			//Lấy danh mục sản phẩm được thiết lập hiển thị trên trang chủ
			$arrCategories = $modelCategories->select_all("default_page=1", "position ASC");
			//Lấy danh mục sản phẩm
			$arrProducts = array();
			foreach ($arrCategories as $category)
			{
				//Nếu danh mục sản phẩm không có danh mục con: lấy 10 sản phẩm thuộc danh mục
				if ($category['parentID'] != 0)
					$products = $modelProducts->select_all("categoryID=".$category['id'],'date_create DESC limit 0,9');
				else 
				{
					//Nếu danh mục có danh mục con: lấy 10 sản phẩm từ các danh mục con đó
					//Lấy danh sách danh mục
					$listCategories = $modelCategories->select_all('parentID='.$category['id']);
					$condition = "";
					foreach ($listCategories as $item)
					{
						if ($condition == "")
							$condition .= "categoryID=" . $item['id'];
						else
							$condition .= " or categoryID=" . $item['id'];
					}
					//Lấy danh mục sản phẩm
					$products = $modelProducts->select_all($condition, "date_create DESC limit 0,9");
				}
				if (!empty($products))
					$arrProducts[$category['name']] = $products;
			}
			$this->view->title = "Sản phẩm tại GMode";
			$this->view->description = 'Tất cả quần áo tại Gmode được chia theo danh mục';
		}
		else 
		{
			if ($args[0] == "category")
			{
				//Lấy danh sách sản phẩm thuộc danh mục
				if (!empty($args[1]))
				{
					$category = $modelCategories->select("id=" . $args[1]);
					if ($category['parentID'] == 0)
					{
						$products = $modelProducts->select_all();
						//Lấy danh mục con
						$arrCategories = $modelCategories->select_all("parentID=". $category['id'], "position ASC");
						//Lấy danh mục sản phẩm
						$arrProducts = array();
						foreach ($arrCategories as $c)
						{
							$products = $modelProducts->select_all("categoryID=".$c['id'],'date_create DESC limit 0,9');
							if (!empty($products))
								$arrProducts[$c['name']] = $products;
						}
					}
					else 
						$arrProducts[$category['name']] = $modelProducts->select_all("categoryID=" . $args[1], 'date_create DESC limit 0,9');
				}	
				//SEO
				$this->view->title = $category["name"];
				$this->view->description = 'Tất cả các sản phẩm trong danh mục '.$category["name"];
			}
		}
		$this->view->products = $arrProducts;
		$this->view->brands = new Areas_CP_Models_Brands();
		
		$this->view->sizes = new Areas_CP_Models_Sizes();

		return $this->view();
	}
	
	//Hiển thị thông tin chi tiết sản phẩm
	/**
	 * [[
	 * model: Areas_CP_Models_Comment
	 * ]]
	 */
	public function detailAction($args)
	{
		//Lấy thông tin sản phẩm
		$modelProduct = new Areas_CP_Models_Products();
		if (!empty($args[0]))
		{
			$product = $modelProduct->select("id='".$args[0]."'");
		}
		//Lấy comment dành cho sản phẩm
		$modelComment = new Areas_CP_Models_Comment();
		$arrComments = $modelComment->select_all("approve=1 and productID='".$product['id']. "'", "date_create DESC");
		
		$this->view->product = $product;
		$this->view->arrComments = $arrComments;
		//Lấy danh mục sản phẩm cùng danh mục
		$this->view->relativeProducts = $modelProduct->select_all("categoryID=".$product['categoryID'] . " and id!='" . $product['id'] . "'");
		$this->view->brands = new Areas_CP_Models_Brands();
		$this->view->materials = new Areas_CP_Models_Materials();
		$this->view->sizes = new Areas_CP_Models_Sizes();
		$this->view->users = new Areas_CP_Models_Users();
		//SEO
		$this->view->title = $product['name'];
		$this->view->keywords = str_replace(" ", ",", $product['name']);
		$this->view->description = $product['description'];
		return $this->view();
	}
	
	/**
	 * [[
	 * model: Areas_CP_Models_Comment
	 * ]]
	 */
	public function detailAJAX()
	{
		if(isset($this->helper->session->data['customer']))
		{
			if($this->hasModel())
			{
				if($this->model->isValid())
				{
					$this->model->approve = 0;
					$this->model->date_create = XPHP_Date::toTime(date("H:i:s d/m/y"));
					$this->model->memberID = $this->helper->session->data['customer']->id;
					$this->model->insert();
					return $this->json(array("success" => true));
				}
				else 
				{
					return $this->json(array("success" => false, "error" => "Nội dung có tối đa 500 kí tự"));
				}
			}
		}
		else
		{
			return $this->json(array("success" => false, "error" => "Bạn cần đăng nhập trước khi nhận xét"));
		}
	}

	public function addCartDialogAction($args)
	{
		//Lấy ra thông tin sản phầm
		$product = new Models_Products($args[0]);
		//Lấy ra danh sách màu của sản phẩm
		$colorList = explode(",", $product->color);
		//Lấy ra danh sách kích cỡ của sản phẩm
		$sizeList = explode(",", $product->size);
		
		//Chuyển sang view
		$this->view->colorList = $colorList;
		$this->view->sizeList = $sizeList;
		$this->view->modelSize = new Areas_CP_Models_Sizes();
		
		$this->unloadLayout();
		return $this->view();
	}

	public function searchAction()
	{
		//Lấy ra thông tin từ param
		$searchType = $this->params["search_in_description"];
		$name = $this->params["sname"];
		$color = $this->params["scolor"];
		$size = $this->params["ssize"];
		$priceFrom = $this->params["spriceFrom"];
		$spriceTo = $this->params["spriceTo"];
		//Mệnh đề where
		$where = "";
		if(trim($name) != "")
			$where .= "(`name` LIKE '%$name%' OR `id` LIKE '%$name%')";
		if($searchType == "1")
		{
			if(trim($color) != "")
			{
				$cw = "`color` LIKE '%$color%'";
				if(trim($where) == "")
					$where .= $cw;
				else 
					$where .= ("AND " . $cw);
			}
			if(trim($size) != "")
			{
				$sw = "`size` LIKE '%$size%'";
				if(trim($where) == "")
					$where .= $sw;
				else 
					$where .= ("AND " . $sw);
			}
			if(!empty($priceFrom) && !empty($spriceTo))
			{
				$pw = "`price` BETWEEN $priceFrom AND $spriceTo ";
				if(trim($where) == "")
					$where .= $pw;
				else 
					$where .= ("AND " . $pw);
			}
		}
		//Tạo model Products
		$model = new Models_Products();
		
		//Trả giá trị về view
		$this->view->productList = $model->select_all($where, "date_create DESC");
		//Lấy thông tin tìm kiếm
		$this->view->size = $size;
		$this->view->name = $name;
		$this->view->color = $color;
		$this->view->priceFrom = $priceFrom;
		$this->view->priceTo = $spriceTo;
		$this->view->searchType = $searchType;
		
		//SEO
		$this->view->title = "Tìm kiếm sản phẩm";
		$this->view->keywords = 'Tên '.$this->view->name.',Cỡ '.$this->view->size.",Màu ".$this->view->color.",Giá từ ".$this->view->priceFrom;
		$this->view->description = 'Tìm kiếm sản phẩm có tên '.$this->view->name.' Cỡ '.$this->view->size." Màu ".$this->view->color." Giá từ ".$this->view->priceFrom;
		return $this->view();
	}
}